#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
//
小红拿到一颗有根树，i号节点的权值为ai，根节点为1号节点；小红有q次操作，每次操作会选择一个节点x，使得x为根的子树上，所有节点的权值乘以y；
求的是，在q次操作后，节点i为根节点的子树的所有点权值乘积末尾有所少个0，
//

int main(){
    //freopen("1.in","r",stdin);
    int n,ans = 0;
    cin >> n;
    vector<int> data(n);
    string s;
    vector<int> red_index,blue_index;
    
    for(int i = 0; i < n; i++){
        // int temp;
        cin >> data[i];
    }
    cin>>s;
    for(int i =0;i<s.size();i++){
        if(s[i]=='R'){
            red_index.push_back(i);
        }
        else{
            blue_index.push_back(i);
        }
    }
    for(int i=0;i<red_index.size();i++){
        for(int j=0;j<blue_index.size();j++){
            ans += data[red_index[i]]*data[blue_index[j]];
        }
    }

    cout << ans%(1000000000+7) << endl;
    return 0;
}